import { subDays, format } from 'date-fns';

// 合并单元格算法
export function addRowAndColSpan(data, groupField, rowspanKey = 'rowspan1', colspanKey = 'colspan1') {
    // 1. 计算每个分组的出现次数（用于 rowspan）
    const countMap = data.reduce((acc, item) => {
        const key = item[groupField];
        acc[key] = (acc[key] || 0) + 1;
        return acc;
    }, {});

    // 2. 记录每个分组是否已出现（用于 colspan）
    const seenGroups = {};

    // 3. 遍历数据，添加 rowspan 和 colspan
    return data.map(item => {
        const groupKey = item[groupField];
        const isFirstInGroup = !seenGroups[groupKey]; // 是否是该分组的第一个

        // 如果是第一次出现，标记为已见
        if (isFirstInGroup) {
            seenGroups[groupKey] = true;
        }

        return {
            ...item,
            [rowspanKey]: countMap[groupKey],
            [colspanKey]: isFirstInGroup ? 1 : 0,
        };
    });
}

export function getFileExtension(mimeType) {
    console.log(mimeType);
    const extensionMap = {
        // 图片类型
        'image/apng': 'apng',
        'image/avif': 'avif',
        'image/gif': 'gif',
        'image/jpeg': 'jpg',
        'image/png': 'png',
        'image/svg+xml': 'svg',
        'image/webp': 'webp',
        'image/x-icon': 'ico',
        'image/bmp': 'bmp',
        'image/tiff': 'tiff',

        // 文档类型
        'text/plain': 'txt',
        'text/csv': 'csv',
        'text/html': 'html',
        'text/css': 'css',
        'text/javascript': 'js',
        'text/markdown': 'md',
        'application/pdf': 'pdf',
        'application/rtf': 'rtf',

        // Office 文档
        'application/msword': 'doc',
        'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 'docx',
        'application/vnd.ms-excel': 'xls',
        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'xlsx',
        'application/vnd.ms-powerpoint': 'ppt',
        'application/vnd.openxmlformats-officedocument.presentationml.presentation': 'pptx',
        'application/vnd.oasis.opendocument.text': 'odt',
        'application/vnd.oasis.opendocument.spreadsheet': 'ods',
        'application/vnd.oasis.opendocument.presentation': 'odp',

        // 编程代码
        'application/json': 'json',
        'application/xml': 'xml',
        'application/yaml': 'yaml',
        'application/x-python-code': 'py',
        'application/x-java': 'java',
        'application/x-php': 'php',
        'application/x-csharp': 'cs',
        'application/x-c++': 'cpp',
        'application/x-sh': 'sh',
        'application/x-ruby': 'rb',

        // 音频
        'audio/mpeg': 'mp3',
        'audio/ogg': 'ogg',
        'audio/wav': 'wav',
        'audio/aac': 'aac',
        'audio/webm': 'weba',
        'audio/x-flac': 'flac',
        'audio/x-m4a': 'm4a',

        // 视频
        'video/mp4': 'mp4',
        'video/ogg': 'ogv',
        'video/webm': 'webm',
        'video/x-msvideo': 'avi',
        'video/x-matroska': 'mkv',
        'video/quicktime': 'mov',
        'video/x-flv': 'flv',
        'video/x-ms-wmv': 'wmv',

        // 压缩包
        'application/zip': 'zip',
        'application/x-rar-compressed': 'rar',
        'application/x-7z-compressed': '7z',
        'application/x-tar': 'tar',
        'application/gzip': 'gz',
        'application/x-bzip2': 'bz2',
        'application/x-lzip': 'lz',
        'application/x-xz': 'xz',

        // 可执行文件
        'application/x-msdownload': 'exe',
        'application/x-apple-diskimage': 'dmg',
        'application/x-debian-package': 'deb',
        'application/x-redhat-package-manager': 'rpm',
        'application/x-shockwave-flash': 'swf',

        // 数据库/数据文件
        'application/x-sql': 'sql',
        'application/x-database': 'db',
        'application/x-sqlite3': 'sqlite',
        'application/x-mdb': 'mdb',

        // 其他常见类型
        'application/octet-stream': 'bin', // 默认二进制文件
        'application/x-font-ttf': 'ttf',
        'application/x-font-woff': 'woff',
        'application/x-font-woff2': 'woff2',
        'application/vnd.android.package-archive': 'apk',
        'application/x-msi': 'msi',
        'application/x-iso9660-image': 'iso',
    }

    // 处理带参数的类型（如 "text/plain;charset=UTF-8"）
    const cleanMimeType = mimeType.split(';')[0].trim()
    return extensionMap[cleanMimeType] || 'bin' // 默认返回 'bin'
}

export function getYesterDay() {
    const yesterday = format(subDays(new Date(), 1), 'yyyy-MM-dd');
    return yesterday;
}